home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / windows / tbag32.zip / REGVIEWM.PAS < prev    next >
Pascal/Delphi Source File  |  1997-03-06  |  5KB  |  176 lines

  1. unit RegViewM;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Tbag, StdCtrls, ComCtrls, ExtCtrls, Buttons;
  8.  
  9. type
  10.   TfrmRegViewMain = class(TForm)
  11.     Bag1: TBag32;
  12.     Tree: TTreeView;
  13.     Memo1: TMemo;
  14.     Panel1: TPanel;
  15.     btnDisplay: TButton;
  16.     edSubKey: TEdit;
  17.     cbHKEY: TComboBox;
  18.     udLevels: TUpDown;
  19.     edLevels: TEdit;
  20.     Label1: TLabel;
  21.     Label2: TLabel;
  22.     btnMemoFont: TSpeedButton;
  23.     btnTreeFont: TSpeedButton;
  24.     dlgFont: TFontDialog;
  25.     dlgColor: TColorDialog;
  26.     Bag2: TBag32;
  27.     SpeedButton1: TSpeedButton;
  28.     procedure FormShow(Sender: TObject);
  29.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  30.     procedure Bag2BeforeGetAll(Sender: TObject);
  31.     procedure Bag2AfterGetAll(Sender: TObject);
  32.     procedure btnDisplayClick(Sender: TObject);
  33.     procedure Bag2GetAll(Sender: TObject; const Key: String;
  34.       Level: Integer; const Ident, Value: String; var Continue: Boolean);
  35.     procedure Bag2GetAllNewLevel(Sender: TObject; const Key: String;
  36.       Level: Integer; var Continue: Boolean);
  37.     procedure TreeClick(Sender: TObject);
  38.     procedure cbHKEYChange(Sender: TObject);
  39.     procedure btnMemoFontClick(Sender: TObject);
  40.     procedure btnTreeFontClick(Sender: TObject);
  41.     procedure SpeedButton1Click(Sender: TObject);
  42.   private
  43.     Nodes: array[0..20] of TTreeNode;
  44.     KeyList: TStringList;
  45.   public
  46.     { Public declarations }
  47.   end;
  48.  
  49. var
  50.   frmRegViewMain: TfrmRegViewMain;
  51.  
  52. implementation
  53.  
  54. {$R *.DFM}
  55.  
  56. uses About3K;
  57.  
  58. procedure TfrmRegViewMain.FormShow(Sender: TObject);
  59. begin
  60.   with Bag1 do begin
  61.     GetFormPlace('FORMPLACE',Self);
  62.     cbHKey.ItemIndex := GetInteger('HKEY',Ord(RKEY_CURRENT_USER));
  63.     edSubKey.Text := GetString('SUBKEY',edSubKey.Text);
  64.     edLevels.Text := GetString('LEVELS',edLevels.Text);
  65.     
  66.     Tree.Font := GetFont('TREE_FONT',Tree.Font);
  67.     GetFontAndColor('MEMO_FAC',Memo1);
  68.   end;
  69.   KeyList := TStringList.Create;
  70.   cbHKEYChange(cbHKEY);
  71. end;
  72.  
  73. procedure TfrmRegViewMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  74. begin
  75.   KeyList.Free;
  76.   with Bag1 do begin
  77.     SetFormPlace('FORMPLACE',Self);
  78.     SetInteger('HKEY',cbHKey.ItemIndex);
  79.     SetString('SUBKEY',edSubKey.Text);
  80.     SetString('LEVELS',edLevels.Text);
  81.   end;
  82. end;
  83.  
  84. procedure TfrmRegViewMain.Bag2BeforeGetAll(Sender: TObject);
  85. begin
  86.   Tree.Items.BeginUpdate;
  87.   Tree.Items.Clear;
  88.   KeyList.Clear;
  89. end;
  90.  
  91. procedure TfrmRegViewMain.Bag2GetAllNewLevel(Sender: TObject; const Key: String;
  92.   Level: Integer; var Continue: Boolean);
  93. begin
  94.   if Level >= High(Nodes) then Exception.Create('nesting level exceeded');
  95.   Nodes[Level+1] := Tree.Items.AddChild(Nodes[Level],Key);
  96.   Nodes[Level+1].Data := nil;
  97. end;
  98.  
  99. procedure TfrmRegViewMain.Bag2GetAll(Sender: TObject; const Key: String;
  100.   Level: Integer; const Ident, Value: String; var Continue: Boolean);
  101. var
  102.   s: string;
  103. begin
  104.   if Length(Value) < 36 then s := Value
  105.   else s := Format('<String L=%d>',[Length(Value)]); 
  106.   Nodes[Level+1] := Tree.Items.AddChild(Nodes[Level],Format('%s = %s',[Ident,s]));
  107.   KeyList.Add(Key+'\'+Ident);
  108.   Nodes[Level+1].Data := Pointer(KeyList.Count);
  109. end;
  110.  
  111. procedure TfrmRegViewMain.Bag2AfterGetAll(Sender: TObject);
  112. begin
  113.   Tree.Items.EndUpdate;
  114. end;
  115.  
  116. procedure TfrmRegViewMain.btnDisplayClick(Sender: TObject);
  117. begin
  118.   Screen.Cursor := crHourGlass;
  119.   try
  120.     Bag2.GetAll(edSubKey.Text,StrToInt(edLevels.Text));
  121.   finally
  122.     Screen.Cursor := crDefault;
  123.   end;
  124. end;
  125.  
  126. procedure TfrmRegViewMain.TreeClick(Sender: TObject);
  127. var
  128.   Node: TTreeNode;
  129. begin
  130.   Node := (Sender as TTreeView).Selected;
  131.   if Node.Data <> nil then
  132.     Bag2.GetStrings(KeyList[Integer(Node.Data)-1],Memo1.Lines);
  133. end;
  134.  
  135. procedure TfrmRegViewMain.cbHKEYChange(Sender: TObject);
  136. begin
  137.   Bag2.RootKey := TRootKey((Sender as TComboBox).ItemIndex);
  138. end;
  139.  
  140. procedure TfrmRegViewMain.btnMemoFontClick(Sender: TObject);
  141. begin
  142.   with dlgColor do begin
  143.     Color := Memo1.Color;
  144.     if Execute then begin
  145.        Memo1.Color := Color;
  146.        with dlgFont do begin
  147.          Font := Memo1.Font;
  148.          if Execute then Memo1.Font := Font;
  149.          Bag1.SetFontAndColor('MEMO_FAC',Memo1);
  150.        end;
  151.     end;
  152.   end;
  153. end;
  154.  
  155. procedure TfrmRegViewMain.btnTreeFontClick(Sender: TObject);
  156. begin
  157.   with dlgFont do begin
  158.     Font := Tree.Font;
  159.     if Execute then begin
  160.       Tree.Font := Font;
  161.       Bag1.SetFont('TREE_FONT',Tree.Font);
  162.     end;
  163.   end;
  164. end;
  165.  
  166. procedure TfrmRegViewMain.SpeedButton1Click(Sender: TObject);
  167. begin
  168.   with TfrmAbout3K.Construct('About RegView') do try
  169.     ShowModal;
  170.   finally
  171.     Free;
  172.   end;
  173. end;
  174.  
  175. end.
  176.